In some information processing systems, volatile write cache temporarily stores or caches data to be later written to a persistent data storage location (i.e., destaged) during a background destaging process. The information processing system may often have a fixed-size page granularity and the system may support write input/output (IO) requests for data segments smaller than the system's page granularity, i.e., small write requests. When a small write request is received, the write cache temporarily stores the new segment data associated with the small write request for later destaging in a write cache destaging process. During the destaging process, the new segment data associated with the small write request is hardened. For example, the data in the data page targeted by the small write request may be read and combined with the new segment data of the small write request to form a new data page which then is stored in the persistent data storage location. A received write request is considered a pending or “inflight” write request prior to being stored in the persistent data storage location, e.g., while awaiting or being processed in the destaging process.
In some systems, the data pages in the persistent data storage location may each have an associated reference count that indicates the number of references to that page in an address-to-hash (A2H) mapping of the information processing system. The reference count for a given data page may be updated as the number of references to that given data page increases or decreases. For example, increment (“Incref”) and decrement (“Decref”) commands may be issued to increment or decrement the reference count associated with a data page in the persistent data storage location.
When the reference count for a given data page is decremented to zero, the given data page may be removed or marked for removal since the data page is no longer used by the system.